#if !defined(LAMBERTIAN_HPP)
#define LAMBERTIAN_HPP

#include "Eigen"

#include "Material.hpp"
#include "utilities.hpp"

class Lambertian :public Material {
private:
    // 光线折损
    Eigen::Vector3f albedo;

public:
    Lambertian() :albedo(0.5, 0.5, 0.5) {}
    Lambertian(const Eigen::Vector3f& albedo):albedo(albedo){}
    ~Lambertian() {}
    bool scatter(
        const Ray& rayIn, const ShadePayload& payload,
        Ray& rayOut, Eigen::Vector3f& attenuation
    )const override;
};


#endif // LAMBERTIAN_HPP
